package com.qianfeng.zhangwei.alipay;

import com.qianfeng.zhangwei.bean.Product;

import java.net.URLEncoder;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Locale;
import java.util.Random;

/**
 * @说 明：
 * @项目名称：Sz1504Adv
 * @包 名： com.qianfeng.zhangwei.alipay
 * @类 名： PayUtils
 * @创 建人： zhangwei
 * @创建时间：2015-08-12 00:16
 * @版 本：v1.0
 * @修 改人：
 * @修改时间：
 * @修改备注：
 */
public class PayUtils {
    /**
     * 生成订单信息
     *
     * @param product
     * @return
     */
    private String getNewOrderInfo(Product product) {
        StringBuilder sb = new StringBuilder();
        sb.append("partner=\"");
        sb.append(Keys.DEFAULT_PARTNER);
        sb.append("\"&out_trade_no=\"");
        sb.append(getOutTradeNo());
        sb.append("\"&subject=\"");
        sb.append(product.getSubject());
        sb.append("\"&body=\"");
        sb.append(product.getBody());
        sb.append("\"&total_fee=\"");
        sb.append(product.price.replace("一口价:", ""));
        sb.append("\"&notify_url=\"");
        // 后台支付页面回调 由web段提供 网址需要做URL编码
        sb.append(URLEncoder.encode("http://notify.java.jpxx.org/index.jsp"));
        sb.append("\"&service=\"mobile.securitypay.pay");
        sb.append("\"&_input_charset=\"UTF-8");
        sb.append("\"&return_url=\"");
        sb.append(URLEncoder.encode("http://m.alipay.com"));
        sb.append("\"&payment_type=\"1");
        sb.append("\"&seller_id=\"");
        sb.append("\"&it_b_pay=\"1m");   // 支付的过期时间字段，这个1m的意思就是，发起支付，1分钟之内没有支付，就过期
        sb.append("\"");
        return new String(sb);
    }

    /**
     * 生成商户订单信息  保证唯一性
     *
     * @return
     */
    private String getOutTradeNo() {
        //确保唯一
        String key = new SimpleDateFormat("MMddHhmmss", Locale.getDefault()).format(new Date());

        Random random = new Random();
        //随机产生一个int值
        key += random.nextInt();
        // 截取0-15位
        key = key.substring(0, 15);
        return key;
    }

}
